package me.helllp.dake.generator.utils;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;

/**
 * 文件和路径的工具类
 */
public class FileAndPathUtils {
    /**
     * 创建目录
     *
     * @param file 目录文件
     * @throws IOException 异常
     */
    public static void makeDir(File file) throws IOException {
        FileUtils.forceMkdir(file);
    }

    /**
     * 创建目录
     *
     * @param filePath 目录字符串
     * @throws IOException 异常
     */
    public static void makeDir(String filePath) throws IOException {
        makeDir(new File(filePath));
    }

    /**
     * 基于基础路径添加子路径
     *
     * @param path 基础路径
     * @param subDir 子路径
     * @return 最终路径
     */
    public static File pathAppend(String path, String... subDir) {
        return Paths.get(path, subDir).toFile();
    }

    /**
     * 基于基础路径添加包
     *
     * @param path 基础路径
     * @param basePackage 包名称
     * @return 最终路径
     */
    public static File pathAppendPackage(String path, String basePackage) {
        String[] packages = basePackage.split("\\.");
        return Paths.get(path, packages).toFile();
    }

    /**
     * 基于基础路径创建包
     *
     * @param path 基础路径
     * @param basePackage 包名
     * @throws IOException 异常
     */
    public static void makePackage(String path, String basePackage) throws IOException {
        makeDir(pathAppendPackage(path, basePackage));
    }
}
